home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / python2.4 / test / test_doctest.pyo (.txt) < prev    next >
Python Compiled Bytecode  |  2005-10-18  |  75KB  |  2,442 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.4)
  3.  
  4. '''
  5. Test script for doctest.
  6. '''
  7. from test import test_support
  8. import doctest
  9. import warnings
  10.  
  11. def sample_func(v):
  12.     '''
  13.     Blah blah
  14.  
  15.     >>> print sample_func(22)
  16.     44
  17.  
  18.     Yee ha!
  19.     '''
  20.     return v + v
  21.  
  22.  
  23. class SampleClass:
  24.     '''
  25.     >>> print 1
  26.     1
  27.  
  28.     >>> # comments get ignored.  so are empty PS1 and PS2 prompts:
  29.     >>>
  30.     ...
  31.  
  32.     Multiline example:
  33.     >>> sc = SampleClass(3)
  34.     >>> for i in range(10):
  35.     ...     sc = sc.double()
  36.     ...     print sc.get(),
  37.     6 12 24 48 96 192 384 768 1536 3072
  38.     '''
  39.     
  40.     def __init__(self, val):
  41.         '''
  42.         >>> print SampleClass(12).get()
  43.         12
  44.         '''
  45.         self.val = val
  46.  
  47.     
  48.     def double(self):
  49.         '''
  50.         >>> print SampleClass(12).double().get()
  51.         24
  52.         '''
  53.         return SampleClass(self.val + self.val)
  54.  
  55.     
  56.     def get(self):
  57.         '''
  58.         >>> print SampleClass(-5).get()
  59.         -5
  60.         '''
  61.         return self.val
  62.  
  63.     
  64.     def a_staticmethod(v):
  65.         '''
  66.         >>> print SampleClass.a_staticmethod(10)
  67.         11
  68.         '''
  69.         return v + 1
  70.  
  71.     a_staticmethod = staticmethod(a_staticmethod)
  72.     
  73.     def a_classmethod(cls, v):
  74.         '''
  75.         >>> print SampleClass.a_classmethod(10)
  76.         12
  77.         >>> print SampleClass(0).a_classmethod(10)
  78.         12
  79.         '''
  80.         return v + 2
  81.  
  82.     a_classmethod = classmethod(a_classmethod)
  83.     a_property = property(get, doc = '\n        >>> print SampleClass(22).a_property\n        22\n        ')
  84.     
  85.     class NestedClass:
  86.         '''
  87.         >>> x = SampleClass.NestedClass(5)
  88.         >>> y = x.square()
  89.         >>> print y.get()
  90.         25
  91.         '''
  92.         
  93.         def __init__(self, val = 0):
  94.             '''
  95.             >>> print SampleClass.NestedClass().get()
  96.             0
  97.             '''
  98.             self.val = val
  99.  
  100.         
  101.         def square(self):
  102.             return SampleClass.NestedClass(self.val * self.val)
  103.  
  104.         
  105.         def get(self):
  106.             return self.val
  107.  
  108.  
  109.  
  110.  
  111. class SampleNewStyleClass(object):
  112.     """
  113.     >>> print '1\\n2\\n3'
  114.     1
  115.     2
  116.     3
  117.     """
  118.     
  119.     def __init__(self, val):
  120.         '''
  121.         >>> print SampleNewStyleClass(12).get()
  122.         12
  123.         '''
  124.         self.val = val
  125.  
  126.     
  127.     def double(self):
  128.         '''
  129.         >>> print SampleNewStyleClass(12).double().get()
  130.         24
  131.         '''
  132.         return SampleNewStyleClass(self.val + self.val)
  133.  
  134.     
  135.     def get(self):
  136.         '''
  137.         >>> print SampleNewStyleClass(-5).get()
  138.         -5
  139.         '''
  140.         return self.val
  141.  
  142.  
  143.  
  144. class _FakeInput:
  145.     """
  146.     A fake input stream for pdb's interactive debugger.  Whenever a
  147.     line is read, print it (to simulate the user typing it), and then
  148.     return it.  The set of lines to return is specified in the
  149.     constructor; they should not have trailing newlines.
  150.     """
  151.     
  152.     def __init__(self, lines):
  153.         self.lines = lines
  154.  
  155.     
  156.     def readline(self):
  157.         line = self.lines.pop(0)
  158.         print line
  159.         return line + '\n'
  160.  
  161.  
  162.  
  163. def test_Example():
  164.     '''
  165. Unit tests for the `Example` class.
  166.  
  167. Example is a simple container class that holds:
  168.   - `source`: A source string.
  169.   - `want`: An expected output string.
  170.   - `exc_msg`: An expected exception message string (or None if no
  171.     exception is expected).
  172.   - `lineno`: A line number (within the docstring).
  173.   - `indent`: The example\'s indentation in the input string.
  174.   - `options`: An option dictionary, mapping option flags to True or
  175.     False.
  176.  
  177. These attributes are set by the constructor.  `source` and `want` are
  178. required; the other attributes all have default values:
  179.  
  180.     >>> example = doctest.Example(\'print 1\', \'1\\n\')
  181.     >>> (example.source, example.want, example.exc_msg,
  182.     ...  example.lineno, example.indent, example.options)
  183.     (\'print 1\\n\', \'1\\n\', None, 0, 0, {})
  184.  
  185. The first three attributes (`source`, `want`, and `exc_msg`) may be
  186. specified positionally; the remaining arguments should be specified as
  187. keyword arguments:
  188.  
  189.     >>> exc_msg = \'IndexError: pop from an empty list\'
  190.     >>> example = doctest.Example(\'[].pop()\', \'\', exc_msg,
  191.     ...                           lineno=5, indent=4,
  192.     ...                           options={doctest.ELLIPSIS: True})
  193.     >>> (example.source, example.want, example.exc_msg,
  194.     ...  example.lineno, example.indent, example.options)
  195.     (\'[].pop()\\n\', \'\', \'IndexError: pop from an empty list\\n\', 5, 4, {8: True})
  196.  
  197. The constructor normalizes the `source` string to end in a newline:
  198.  
  199.     Source spans a single line: no terminating newline.
  200.     >>> e = doctest.Example(\'print 1\', \'1\\n\')
  201.     >>> e.source, e.want
  202.     (\'print 1\\n\', \'1\\n\')
  203.  
  204.     >>> e = doctest.Example(\'print 1\\n\', \'1\\n\')
  205.     >>> e.source, e.want
  206.     (\'print 1\\n\', \'1\\n\')
  207.  
  208.     Source spans multiple lines: require terminating newline.
  209.     >>> e = doctest.Example(\'print 1;\\nprint 2\\n\', \'1\\n2\\n\')
  210.     >>> e.source, e.want
  211.     (\'print 1;\\nprint 2\\n\', \'1\\n2\\n\')
  212.  
  213.     >>> e = doctest.Example(\'print 1;\\nprint 2\', \'1\\n2\\n\')
  214.     >>> e.source, e.want
  215.     (\'print 1;\\nprint 2\\n\', \'1\\n2\\n\')
  216.  
  217.     Empty source string (which should never appear in real examples)
  218.     >>> e = doctest.Example(\'\', \'\')
  219.     >>> e.source, e.want
  220.     (\'\\n\', \'\')
  221.  
  222. The constructor normalizes the `want` string to end in a newline,
  223. unless it\'s the empty string:
  224.  
  225.     >>> e = doctest.Example(\'print 1\', \'1\\n\')
  226.     >>> e.source, e.want
  227.     (\'print 1\\n\', \'1\\n\')
  228.  
  229.     >>> e = doctest.Example(\'print 1\', \'1\')
  230.     >>> e.source, e.want
  231.     (\'print 1\\n\', \'1\\n\')
  232.  
  233.     >>> e = doctest.Example(\'print\', \'\')
  234.     >>> e.source, e.want
  235.     (\'print\\n\', \'\')
  236.  
  237. The constructor normalizes the `exc_msg` string to end in a newline,
  238. unless it\'s `None`:
  239.  
  240.     Message spans one line
  241.     >>> exc_msg = \'IndexError: pop from an empty list\'
  242.     >>> e = doctest.Example(\'[].pop()\', \'\', exc_msg)
  243.     >>> e.exc_msg
  244.     \'IndexError: pop from an empty list\\n\'
  245.  
  246.     >>> exc_msg = \'IndexError: pop from an empty list\\n\'
  247.     >>> e = doctest.Example(\'[].pop()\', \'\', exc_msg)
  248.     >>> e.exc_msg
  249.     \'IndexError: pop from an empty list\\n\'
  250.  
  251.     Message spans multiple lines
  252.     >>> exc_msg = \'ValueError: 1\\n  2\'
  253.     >>> e = doctest.Example(\'raise ValueError("1\\n  2")\', \'\', exc_msg)
  254.     >>> e.exc_msg
  255.     \'ValueError: 1\\n  2\\n\'
  256.  
  257.     >>> exc_msg = \'ValueError: 1\\n  2\\n\'
  258.     >>> e = doctest.Example(\'raise ValueError("1\\n  2")\', \'\', exc_msg)
  259.     >>> e.exc_msg
  260.     \'ValueError: 1\\n  2\\n\'
  261.  
  262.     Empty (but non-None) exception message (which should never appear
  263.     in real examples)
  264.     >>> exc_msg = \'\'
  265.     >>> e = doctest.Example(\'raise X()\', \'\', exc_msg)
  266.     >>> e.exc_msg
  267.     \'\\n\'
  268. '''
  269.     pass
  270.  
  271.  
  272. def test_DocTest():
  273.     '''
  274. Unit tests for the `DocTest` class.
  275.  
  276. DocTest is a collection of examples, extracted from a docstring, along
  277. with information about where the docstring comes from (a name,
  278. filename, and line number).  The docstring is parsed by the `DocTest`
  279. constructor:
  280.  
  281.     >>> docstring = \'\'\'
  282.     ...     >>> print 12
  283.     ...     12
  284.     ...
  285.     ... Non-example text.
  286.     ...
  287.     ...     >>> print \'another\\example\'
  288.     ...     another
  289.     ...     example
  290.     ... \'\'\'
  291.     >>> globs = {} # globals to run the test in.
  292.     >>> parser = doctest.DocTestParser()
  293.     >>> test = parser.get_doctest(docstring, globs, \'some_test\',
  294.     ...                           \'some_file\', 20)
  295.     >>> print test
  296.     <DocTest some_test from some_file:20 (2 examples)>
  297.     >>> len(test.examples)
  298.     2
  299.     >>> e1, e2 = test.examples
  300.     >>> (e1.source, e1.want, e1.lineno)
  301.     (\'print 12\\n\', \'12\\n\', 1)
  302.     >>> (e2.source, e2.want, e2.lineno)
  303.     ("print \'another\\\\example\'\\n", \'another\\nexample\\n\', 6)
  304.  
  305. Source information (name, filename, and line number) is available as
  306. attributes on the doctest object:
  307.  
  308.     >>> (test.name, test.filename, test.lineno)
  309.     (\'some_test\', \'some_file\', 20)
  310.  
  311. The line number of an example within its containing file is found by
  312. adding the line number of the example and the line number of its
  313. containing test:
  314.  
  315.     >>> test.lineno + e1.lineno
  316.     21
  317.     >>> test.lineno + e2.lineno
  318.     26
  319.  
  320. If the docstring contains inconsistant leading whitespace in the
  321. expected output of an example, then `DocTest` will raise a ValueError:
  322.  
  323.     >>> docstring = r\'\'\'
  324.     ...       >>> print \'bad\\nindentation\'
  325.     ...       bad
  326.     ...     indentation
  327.     ...     \'\'\'
  328.     >>> parser.get_doctest(docstring, globs, \'some_test\', \'filename\', 0)
  329.     Traceback (most recent call last):
  330.     ValueError: line 4 of the docstring for some_test has inconsistent leading whitespace: \'indentation\'
  331.  
  332. If the docstring contains inconsistent leading whitespace on
  333. continuation lines, then `DocTest` will raise a ValueError:
  334.  
  335.     >>> docstring = r\'\'\'
  336.     ...       >>> print (\'bad indentation\',
  337.     ...     ...          2)
  338.     ...       (\'bad\', \'indentation\')
  339.     ...     \'\'\'
  340.     >>> parser.get_doctest(docstring, globs, \'some_test\', \'filename\', 0)
  341.     Traceback (most recent call last):
  342.     ValueError: line 2 of the docstring for some_test has inconsistent leading whitespace: \'...          2)\'
  343.  
  344. If there\'s no blank space after a PS1 prompt (\'>>>\'), then `DocTest`
  345. will raise a ValueError:
  346.  
  347.     >>> docstring = \'>>>print 1\\n1\'
  348.     >>> parser.get_doctest(docstring, globs, \'some_test\', \'filename\', 0)
  349.     Traceback (most recent call last):
  350.     ValueError: line 1 of the docstring for some_test lacks blank after >>>: \'>>>print 1\'
  351.  
  352. If there\'s no blank space after a PS2 prompt (\'...\'), then `DocTest`
  353. will raise a ValueError:
  354.  
  355.     >>> docstring = \'>>> if 1:\\n...print 1\\n1\'
  356.     >>> parser.get_doctest(docstring, globs, \'some_test\', \'filename\', 0)
  357.     Traceback (most recent call last):
  358.     ValueError: line 2 of the docstring for some_test lacks blank after ...: \'...print 1\'
  359.  
  360. '''
  361.     pass
  362.  
  363.  
  364. def test_DocTestFinder():
  365.     """
  366. Unit tests for the `DocTestFinder` class.
  367.  
  368. DocTestFinder is used to extract DocTests from an object's docstring
  369. and the docstrings of its contained objects.  It can be used with
  370. modules, functions, classes, methods, staticmethods, classmethods, and
  371. properties.
  372.  
  373. Finding Tests in Functions
  374. ~~~~~~~~~~~~~~~~~~~~~~~~~~
  375. For a function whose docstring contains examples, DocTestFinder.find()
  376. will return a single test (for that function's docstring):
  377.  
  378.     >>> finder = doctest.DocTestFinder()
  379.  
  380. We'll simulate a __file__ attr that ends in pyc:
  381.  
  382.     >>> import test.test_doctest
  383.     >>> old = test.test_doctest.__file__
  384.     >>> test.test_doctest.__file__ = 'test_doctest.pyc'
  385.  
  386.     >>> tests = finder.find(sample_func)
  387.  
  388.     >>> print tests  # doctest: +ELLIPSIS
  389.     [<DocTest sample_func from ...:13 (1 example)>]
  390.  
  391. The exact name depends on how test_doctest was invoked, so allow for
  392. leading path components.
  393.  
  394.     >>> tests[0].filename # doctest: +ELLIPSIS
  395.     '...test_doctest.py'
  396.  
  397.     >>> test.test_doctest.__file__ = old
  398.  
  399.  
  400.     >>> e = tests[0].examples[0]
  401.     >>> (e.source, e.want, e.lineno)
  402.     ('print sample_func(22)\\n', '44\\n', 3)
  403.  
  404. By default, tests are created for objects with no docstring:
  405.  
  406.     >>> def no_docstring(v):
  407.     ...     pass
  408.     >>> finder.find(no_docstring)
  409.     []
  410.  
  411. However, the optional argument `exclude_empty` to the DocTestFinder
  412. constructor can be used to exclude tests for objects with empty
  413. docstrings:
  414.  
  415.     >>> def no_docstring(v):
  416.     ...     pass
  417.     >>> excl_empty_finder = doctest.DocTestFinder(exclude_empty=True)
  418.     >>> excl_empty_finder.find(no_docstring)
  419.     []
  420.  
  421. If the function has a docstring with no examples, then a test with no
  422. examples is returned.  (This lets `DocTestRunner` collect statistics
  423. about which functions have no tests -- but is that useful?  And should
  424. an empty test also be created when there's no docstring?)
  425.  
  426.     >>> def no_examples(v):
  427.     ...     ''' no doctest examples '''
  428.     >>> finder.find(no_examples) # doctest: +ELLIPSIS
  429.     [<DocTest no_examples from ...:1 (no examples)>]
  430.  
  431. Finding Tests in Classes
  432. ~~~~~~~~~~~~~~~~~~~~~~~~
  433. For a class, DocTestFinder will create a test for the class's
  434. docstring, and will recursively explore its contents, including
  435. methods, classmethods, staticmethods, properties, and nested classes.
  436.  
  437.     >>> finder = doctest.DocTestFinder()
  438.     >>> tests = finder.find(SampleClass)
  439.     >>> tests.sort()
  440.     >>> for t in tests:
  441.     ...     print '%2s  %s' % (len(t.examples), t.name)
  442.      3  SampleClass
  443.      3  SampleClass.NestedClass
  444.      1  SampleClass.NestedClass.__init__
  445.      1  SampleClass.__init__
  446.      2  SampleClass.a_classmethod
  447.      1  SampleClass.a_property
  448.      1  SampleClass.a_staticmethod
  449.      1  SampleClass.double
  450.      1  SampleClass.get
  451.  
  452. New-style classes are also supported:
  453.  
  454.     >>> tests = finder.find(SampleNewStyleClass)
  455.     >>> tests.sort()
  456.     >>> for t in tests:
  457.     ...     print '%2s  %s' % (len(t.examples), t.name)
  458.      1  SampleNewStyleClass
  459.      1  SampleNewStyleClass.__init__
  460.      1  SampleNewStyleClass.double
  461.      1  SampleNewStyleClass.get
  462.  
  463. Finding Tests in Modules
  464. ~~~~~~~~~~~~~~~~~~~~~~~~
  465. For a module, DocTestFinder will create a test for the class's
  466. docstring, and will recursively explore its contents, including
  467. functions, classes, and the `__test__` dictionary, if it exists:
  468.  
  469.     >>> # A module
  470.     >>> import new
  471.     >>> m = new.module('some_module')
  472.     >>> def triple(val):
  473.     ...     '''
  474.     ...     >>> print triple(11)
  475.     ...     33
  476.     ...     '''
  477.     ...     return val*3
  478.     >>> m.__dict__.update({
  479.     ...     'sample_func': sample_func,
  480.     ...     'SampleClass': SampleClass,
  481.     ...     '__doc__': '''
  482.     ...         Module docstring.
  483.     ...             >>> print 'module'
  484.     ...             module
  485.     ...         ''',
  486.     ...     '__test__': {
  487.     ...         'd': '>>> print 6\\n6\\n>>> print 7\\n7\\n',
  488.     ...         'c': triple}})
  489.  
  490.     >>> finder = doctest.DocTestFinder()
  491.     >>> # Use module=test.test_doctest, to prevent doctest from
  492.     >>> # ignoring the objects since they weren't defined in m.
  493.     >>> import test.test_doctest
  494.     >>> tests = finder.find(m, module=test.test_doctest)
  495.     >>> tests.sort()
  496.     >>> for t in tests:
  497.     ...     print '%2s  %s' % (len(t.examples), t.name)
  498.      1  some_module
  499.      3  some_module.SampleClass
  500.      3  some_module.SampleClass.NestedClass
  501.      1  some_module.SampleClass.NestedClass.__init__
  502.      1  some_module.SampleClass.__init__
  503.      2  some_module.SampleClass.a_classmethod
  504.      1  some_module.SampleClass.a_property
  505.      1  some_module.SampleClass.a_staticmethod
  506.      1  some_module.SampleClass.double
  507.      1  some_module.SampleClass.get
  508.      1  some_module.__test__.c
  509.      2  some_module.__test__.d
  510.      1  some_module.sample_func
  511.  
  512. Duplicate Removal
  513. ~~~~~~~~~~~~~~~~~
  514. If a single object is listed twice (under different names), then tests
  515. will only be generated for it once:
  516.  
  517.     >>> from test import doctest_aliases
  518.     >>> tests = excl_empty_finder.find(doctest_aliases)
  519.     >>> tests.sort()
  520.     >>> print len(tests)
  521.     2
  522.     >>> print tests[0].name
  523.     test.doctest_aliases.TwoNames
  524.  
  525.     TwoNames.f and TwoNames.g are bound to the same object.
  526.     We can't guess which will be found in doctest's traversal of
  527.     TwoNames.__dict__ first, so we have to allow for either.
  528.  
  529.     >>> tests[1].name.split('.')[-1] in ['f', 'g']
  530.     True
  531.  
  532. Filter Functions
  533. ~~~~~~~~~~~~~~~~
  534. A filter function can be used to restrict which objects get examined,
  535. but this is temporary, undocumented internal support for testmod's
  536. deprecated isprivate gimmick.
  537.  
  538.     >>> def namefilter(prefix, base):
  539.     ...     return base.startswith('a_')
  540.     >>> tests = doctest.DocTestFinder(_namefilter=namefilter).find(SampleClass)
  541.     >>> tests.sort()
  542.     >>> for t in tests:
  543.     ...     print '%2s  %s' % (len(t.examples), t.name)
  544.      3  SampleClass
  545.      3  SampleClass.NestedClass
  546.      1  SampleClass.NestedClass.__init__
  547.      1  SampleClass.__init__
  548.      1  SampleClass.double
  549.      1  SampleClass.get
  550.  
  551. By default, that excluded objects with no doctests.  exclude_empty=False
  552. tells it to include (empty) tests for objects with no doctests.  This feature
  553. is really to support backward compatibility in what doctest.master.summarize()
  554. displays.
  555.  
  556.     >>> tests = doctest.DocTestFinder(_namefilter=namefilter,
  557.     ...                                exclude_empty=False).find(SampleClass)
  558.     >>> tests.sort()
  559.     >>> for t in tests:
  560.     ...     print '%2s  %s' % (len(t.examples), t.name)
  561.      3  SampleClass
  562.      3  SampleClass.NestedClass
  563.      1  SampleClass.NestedClass.__init__
  564.      0  SampleClass.NestedClass.get
  565.      0  SampleClass.NestedClass.square
  566.      1  SampleClass.__init__
  567.      1  SampleClass.double
  568.      1  SampleClass.get
  569.  
  570. If a given object is filtered out, then none of the objects that it
  571. contains will be added either:
  572.  
  573.     >>> def namefilter(prefix, base):
  574.     ...     return base == 'NestedClass'
  575.     >>> tests = doctest.DocTestFinder(_namefilter=namefilter).find(SampleClass)
  576.     >>> tests.sort()
  577.     >>> for t in tests:
  578.     ...     print '%2s  %s' % (len(t.examples), t.name)
  579.      3  SampleClass
  580.      1  SampleClass.__init__
  581.      2  SampleClass.a_classmethod
  582.      1  SampleClass.a_property
  583.      1  SampleClass.a_staticmethod
  584.      1  SampleClass.double
  585.      1  SampleClass.get
  586.  
  587. The filter function apply to contained objects, and *not* to the
  588. object explicitly passed to DocTestFinder:
  589.  
  590.     >>> def namefilter(prefix, base):
  591.     ...     return base == 'SampleClass'
  592.     >>> tests = doctest.DocTestFinder(_namefilter=namefilter).find(SampleClass)
  593.     >>> len(tests)
  594.     9
  595.  
  596. Turning off Recursion
  597. ~~~~~~~~~~~~~~~~~~~~~
  598. DocTestFinder can be told not to look for tests in contained objects
  599. using the `recurse` flag:
  600.  
  601.     >>> tests = doctest.DocTestFinder(recurse=False).find(SampleClass)
  602.     >>> tests.sort()
  603.     >>> for t in tests:
  604.     ...     print '%2s  %s' % (len(t.examples), t.name)
  605.      3  SampleClass
  606.  
  607. Line numbers
  608. ~~~~~~~~~~~~
  609. DocTestFinder finds the line number of each example:
  610.  
  611.     >>> def f(x):
  612.     ...     '''
  613.     ...     >>> x = 12
  614.     ...
  615.     ...     some text
  616.     ...
  617.     ...     >>> # examples are not created for comments & bare prompts.
  618.     ...     >>>
  619.     ...     ...
  620.     ...
  621.     ...     >>> for x in range(10):
  622.     ...     ...     print x,
  623.     ...     0 1 2 3 4 5 6 7 8 9
  624.     ...     >>> x/2
  625.     ...     6
  626.     ...     '''
  627.     >>> test = doctest.DocTestFinder().find(f)[0]
  628.     >>> [e.lineno for e in test.examples]
  629.     [1, 9, 12]
  630. """
  631.     pass
  632.  
  633.  
  634. def test_DocTestParser():
  635.     """
  636. Unit tests for the `DocTestParser` class.
  637.  
  638. DocTestParser is used to parse docstrings containing doctest examples.
  639.  
  640. The `parse` method divides a docstring into examples and intervening
  641. text:
  642.  
  643.     >>> s = '''
  644.     ...     >>> x, y = 2, 3  # no output expected
  645.     ...     >>> if 1:
  646.     ...     ...     print x
  647.     ...     ...     print y
  648.     ...     2
  649.     ...     3
  650.     ...
  651.     ...     Some text.
  652.     ...     >>> x+y
  653.     ...     5
  654.     ...     '''
  655.     >>> parser = doctest.DocTestParser()
  656.     >>> for piece in parser.parse(s):
  657.     ...     if isinstance(piece, doctest.Example):
  658.     ...         print 'Example:', (piece.source, piece.want, piece.lineno)
  659.     ...     else:
  660.     ...         print '   Text:', `piece`
  661.        Text: '\\n'
  662.     Example: ('x, y = 2, 3  # no output expected\\n', '', 1)
  663.        Text: ''
  664.     Example: ('if 1:\\n    print x\\n    print y\\n', '2\\n3\\n', 2)
  665.        Text: '\\nSome text.\\n'
  666.     Example: ('x+y\\n', '5\\n', 9)
  667.        Text: ''
  668.  
  669. The `get_examples` method returns just the examples:
  670.  
  671.     >>> for piece in parser.get_examples(s):
  672.     ...     print (piece.source, piece.want, piece.lineno)
  673.     ('x, y = 2, 3  # no output expected\\n', '', 1)
  674.     ('if 1:\\n    print x\\n    print y\\n', '2\\n3\\n', 2)
  675.     ('x+y\\n', '5\\n', 9)
  676.  
  677. The `get_doctest` method creates a Test from the examples, along with the
  678. given arguments:
  679.  
  680.     >>> test = parser.get_doctest(s, {}, 'name', 'filename', lineno=5)
  681.     >>> (test.name, test.filename, test.lineno)
  682.     ('name', 'filename', 5)
  683.     >>> for piece in test.examples:
  684.     ...     print (piece.source, piece.want, piece.lineno)
  685.     ('x, y = 2, 3  # no output expected\\n', '', 1)
  686.     ('if 1:\\n    print x\\n    print y\\n', '2\\n3\\n', 2)
  687.     ('x+y\\n', '5\\n', 9)
  688. """
  689.     pass
  690.  
  691.  
  692. class test_DocTestRunner:
  693.     
  694.     def basics():
  695.         """
  696. Unit tests for the `DocTestRunner` class.
  697.  
  698. DocTestRunner is used to run DocTest test cases, and to accumulate
  699. statistics.  Here's a simple DocTest case we can use:
  700.  
  701.     >>> def f(x):
  702.     ...     '''
  703.     ...     >>> x = 12
  704.     ...     >>> print x
  705.     ...     12
  706.     ...     >>> x/2
  707.     ...     6
  708.     ...     '''
  709.     >>> test = doctest.DocTestFinder().find(f)[0]
  710.  
  711. The main DocTestRunner interface is the `run` method, which runs a
  712. given DocTest case in a given namespace (globs).  It returns a tuple
  713. `(f,t)`, where `f` is the number of failed tests and `t` is the number
  714. of tried tests.
  715.  
  716.     >>> doctest.DocTestRunner(verbose=False).run(test)
  717.     (0, 3)
  718.  
  719. If any example produces incorrect output, then the test runner reports
  720. the failure and proceeds to the next example:
  721.  
  722.     >>> def f(x):
  723.     ...     '''
  724.     ...     >>> x = 12
  725.     ...     >>> print x
  726.     ...     14
  727.     ...     >>> x/2
  728.     ...     6
  729.     ...     '''
  730.     >>> test = doctest.DocTestFinder().find(f)[0]
  731.     >>> doctest.DocTestRunner(verbose=True).run(test)
  732.     ... # doctest: +ELLIPSIS
  733.     Trying:
  734.         x = 12
  735.     Expecting nothing
  736.     ok
  737.     Trying:
  738.         print x
  739.     Expecting:
  740.         14
  741.     **********************************************************************
  742.     File ..., line 4, in f
  743.     Failed example:
  744.         print x
  745.     Expected:
  746.         14
  747.     Got:
  748.         12
  749.     Trying:
  750.         x/2
  751.     Expecting:
  752.         6
  753.     ok
  754.     (1, 3)
  755. """
  756.         pass
  757.  
  758.     
  759.     def verbose_flag():
  760.         """
  761. The `verbose` flag makes the test runner generate more detailed
  762. output:
  763.  
  764.     >>> def f(x):
  765.     ...     '''
  766.     ...     >>> x = 12
  767.     ...     >>> print x
  768.     ...     12
  769.     ...     >>> x/2
  770.     ...     6
  771.     ...     '''
  772.     >>> test = doctest.DocTestFinder().find(f)[0]
  773.  
  774.     >>> doctest.DocTestRunner(verbose=True).run(test)
  775.     Trying:
  776.         x = 12
  777.     Expecting nothing
  778.     ok
  779.     Trying:
  780.         print x
  781.     Expecting:
  782.         12
  783.     ok
  784.     Trying:
  785.         x/2
  786.     Expecting:
  787.         6
  788.     ok
  789.     (0, 3)
  790.  
  791. If the `verbose` flag is unspecified, then the output will be verbose
  792. iff `-v` appears in sys.argv:
  793.  
  794.     >>> # Save the real sys.argv list.
  795.     >>> old_argv = sys.argv
  796.  
  797.     >>> # If -v does not appear in sys.argv, then output isn't verbose.
  798.     >>> sys.argv = ['test']
  799.     >>> doctest.DocTestRunner().run(test)
  800.     (0, 3)
  801.  
  802.     >>> # If -v does appear in sys.argv, then output is verbose.
  803.     >>> sys.argv = ['test', '-v']
  804.     >>> doctest.DocTestRunner().run(test)
  805.     Trying:
  806.         x = 12
  807.     Expecting nothing
  808.     ok
  809.     Trying:
  810.         print x
  811.     Expecting:
  812.         12
  813.     ok
  814.     Trying:
  815.         x/2
  816.     Expecting:
  817.         6
  818.     ok
  819.     (0, 3)
  820.  
  821.     >>> # Restore sys.argv
  822.     >>> sys.argv = old_argv
  823.  
  824. In the remaining examples, the test runner's verbosity will be
  825. explicitly set, to ensure that the test behavior is consistent.
  826.     """
  827.         pass
  828.  
  829.     
  830.     def exceptions():
  831.         """
  832. Tests of `DocTestRunner`'s exception handling.
  833.  
  834. An expected exception is specified with a traceback message.  The
  835. lines between the first line and the type/value may be omitted or
  836. replaced with any other string:
  837.  
  838.     >>> def f(x):
  839.     ...     '''
  840.     ...     >>> x = 12
  841.     ...     >>> print x/0
  842.     ...     Traceback (most recent call last):
  843.     ...     ZeroDivisionError: integer division or modulo by zero
  844.     ...     '''
  845.     >>> test = doctest.DocTestFinder().find(f)[0]
  846.     >>> doctest.DocTestRunner(verbose=False).run(test)
  847.     (0, 2)
  848.  
  849. An example may not generate output before it raises an exception; if
  850. it does, then the traceback message will not be recognized as
  851. signaling an expected exception, so the example will be reported as an
  852. unexpected exception:
  853.  
  854.     >>> def f(x):
  855.     ...     '''
  856.     ...     >>> x = 12
  857.     ...     >>> print 'pre-exception output', x/0
  858.     ...     pre-exception output
  859.     ...     Traceback (most recent call last):
  860.     ...     ZeroDivisionError: integer division or modulo by zero
  861.     ...     '''
  862.     >>> test = doctest.DocTestFinder().find(f)[0]
  863.     >>> doctest.DocTestRunner(verbose=False).run(test)
  864.     ... # doctest: +ELLIPSIS
  865.     **********************************************************************
  866.     File ..., line 4, in f
  867.     Failed example:
  868.         print 'pre-exception output', x/0
  869.     Exception raised:
  870.         ...
  871.         ZeroDivisionError: integer division or modulo by zero
  872.     (1, 2)
  873.  
  874. Exception messages may contain newlines:
  875.  
  876.     >>> def f(x):
  877.     ...     r'''
  878.     ...     >>> raise ValueError, 'multi\\nline\\nmessage'
  879.     ...     Traceback (most recent call last):
  880.     ...     ValueError: multi
  881.     ...     line
  882.     ...     message
  883.     ...     '''
  884.     >>> test = doctest.DocTestFinder().find(f)[0]
  885.     >>> doctest.DocTestRunner(verbose=False).run(test)
  886.     (0, 1)
  887.  
  888. If an exception is expected, but an exception with the wrong type or
  889. message is raised, then it is reported as a failure:
  890.  
  891.     >>> def f(x):
  892.     ...     r'''
  893.     ...     >>> raise ValueError, 'message'
  894.     ...     Traceback (most recent call last):
  895.     ...     ValueError: wrong message
  896.     ...     '''
  897.     >>> test = doctest.DocTestFinder().find(f)[0]
  898.     >>> doctest.DocTestRunner(verbose=False).run(test)
  899.     ... # doctest: +ELLIPSIS
  900.     **********************************************************************
  901.     File ..., line 3, in f
  902.     Failed example:
  903.         raise ValueError, 'message'
  904.     Expected:
  905.         Traceback (most recent call last):
  906.         ValueError: wrong message
  907.     Got:
  908.         Traceback (most recent call last):
  909.         ...
  910.         ValueError: message
  911.     (1, 1)
  912.  
  913. However, IGNORE_EXCEPTION_DETAIL can be used to allow a mismatch in the
  914. detail:
  915.  
  916.     >>> def f(x):
  917.     ...     r'''
  918.     ...     >>> raise ValueError, 'message' #doctest: +IGNORE_EXCEPTION_DETAIL
  919.     ...     Traceback (most recent call last):
  920.     ...     ValueError: wrong message
  921.     ...     '''
  922.     >>> test = doctest.DocTestFinder().find(f)[0]
  923.     >>> doctest.DocTestRunner(verbose=False).run(test)
  924.     (0, 1)
  925.  
  926. But IGNORE_EXCEPTION_DETAIL does not allow a mismatch in the exception type:
  927.  
  928.     >>> def f(x):
  929.     ...     r'''
  930.     ...     >>> raise ValueError, 'message' #doctest: +IGNORE_EXCEPTION_DETAIL
  931.     ...     Traceback (most recent call last):
  932.     ...     TypeError: wrong type
  933.     ...     '''
  934.     >>> test = doctest.DocTestFinder().find(f)[0]
  935.     >>> doctest.DocTestRunner(verbose=False).run(test)
  936.     ... # doctest: +ELLIPSIS
  937.     **********************************************************************
  938.     File ..., line 3, in f
  939.     Failed example:
  940.         raise ValueError, 'message' #doctest: +IGNORE_EXCEPTION_DETAIL
  941.     Expected:
  942.         Traceback (most recent call last):
  943.         TypeError: wrong type
  944.     Got:
  945.         Traceback (most recent call last):
  946.         ...
  947.         ValueError: message
  948.     (1, 1)
  949.  
  950. If an exception is raised but not expected, then it is reported as an
  951. unexpected exception:
  952.  
  953.     >>> def f(x):
  954.     ...     r'''
  955.     ...     >>> 1/0
  956.     ...     0
  957.     ...     '''
  958.     >>> test = doctest.DocTestFinder().find(f)[0]
  959.     >>> doctest.DocTestRunner(verbose=False).run(test)
  960.     ... # doctest: +ELLIPSIS
  961.     **********************************************************************
  962.     File ..., line 3, in f
  963.     Failed example:
  964.         1/0
  965.     Exception raised:
  966.         Traceback (most recent call last):
  967.         ...
  968.         ZeroDivisionError: integer division or modulo by zero
  969.     (1, 1)
  970. """
  971.         pass
  972.  
  973.     
  974.     def optionflags():
  975.         '''
  976. Tests of `DocTestRunner`\'s option flag handling.
  977.  
  978. Several option flags can be used to customize the behavior of the test
  979. runner.  These are defined as module constants in doctest, and passed
  980. to the DocTestRunner constructor (multiple constants should be or-ed
  981. together).
  982.  
  983. The DONT_ACCEPT_TRUE_FOR_1 flag disables matches between True/False
  984. and 1/0:
  985.  
  986.     >>> def f(x):
  987.     ...     \'>>> True\\n1\\n\'
  988.  
  989.     >>> # Without the flag:
  990.     >>> test = doctest.DocTestFinder().find(f)[0]
  991.     >>> doctest.DocTestRunner(verbose=False).run(test)
  992.     (0, 1)
  993.  
  994.     >>> # With the flag:
  995.     >>> test = doctest.DocTestFinder().find(f)[0]
  996.     >>> flags = doctest.DONT_ACCEPT_TRUE_FOR_1
  997.     >>> doctest.DocTestRunner(verbose=False, optionflags=flags).run(test)
  998.     ... # doctest: +ELLIPSIS
  999.     **********************************************************************
  1000.     File ..., line 2, in f
  1001.     Failed example:
  1002.         True
  1003.     Expected:
  1004.         1
  1005.     Got:
  1006.         True
  1007.     (1, 1)
  1008.  
  1009. The DONT_ACCEPT_BLANKLINE flag disables the match between blank lines
  1010. and the \'<BLANKLINE>\' marker:
  1011.  
  1012.     >>> def f(x):
  1013.     ...     \'>>> print "a\\\\n\\\\nb"\\na\\n<BLANKLINE>\\nb\\n\'
  1014.  
  1015.     >>> # Without the flag:
  1016.     >>> test = doctest.DocTestFinder().find(f)[0]
  1017.     >>> doctest.DocTestRunner(verbose=False).run(test)
  1018.     (0, 1)
  1019.  
  1020.     >>> # With the flag:
  1021.     >>> test = doctest.DocTestFinder().find(f)[0]
  1022.     >>> flags = doctest.DONT_ACCEPT_BLANKLINE
  1023.     >>> doctest.DocTestRunner(verbose=False, optionflags=flags).run(test)
  1024.     ... # doctest: +ELLIPSIS
  1025.     **********************************************************************
  1026.     File ..., line 2, in f
  1027.     Failed example:
  1028.         print "a\\n\\nb"
  1029.     Expected:
  1030.         a
  1031.         <BLANKLINE>
  1032.         b
  1033.     Got:
  1034.         a
  1035.     <BLANKLINE>
  1036.         b
  1037.     (1, 1)
  1038.  
  1039. The NORMALIZE_WHITESPACE flag causes all sequences of whitespace to be
  1040. treated as equal:
  1041.  
  1042.     >>> def f(x):
  1043.     ...     \'>>> print 1, 2, 3\\n  1   2\\n 3\'
  1044.  
  1045.     >>> # Without the flag:
  1046.     >>> test = doctest.DocTestFinder().find(f)[0]
  1047.     >>> doctest.DocTestRunner(verbose=False).run(test)
  1048.     ... # doctest: +ELLIPSIS
  1049.     **********************************************************************
  1050.     File ..., line 2, in f
  1051.     Failed example:
  1052.         print 1, 2, 3
  1053.     Expected:
  1054.           1   2
  1055.          3
  1056.     Got:
  1057.         1 2 3
  1058.     (1, 1)
  1059.  
  1060.     >>> # With the flag:
  1061.     >>> test = doctest.DocTestFinder().find(f)[0]
  1062.     >>> flags = doctest.NORMALIZE_WHITESPACE
  1063.     >>> doctest.DocTestRunner(verbose=False, optionflags=flags).run(test)
  1064.     (0, 1)
  1065.  
  1066.     An example from the docs:
  1067.     >>> print range(20) #doctest: +NORMALIZE_WHITESPACE
  1068.     [0,   1,  2,  3,  4,  5,  6,  7,  8,  9,
  1069.     10,  11, 12, 13, 14, 15, 16, 17, 18, 19]
  1070.  
  1071. The ELLIPSIS flag causes ellipsis marker ("...") in the expected
  1072. output to match any substring in the actual output:
  1073.  
  1074.     >>> def f(x):
  1075.     ...     \'>>> print range(15)\\n[0, 1, 2, ..., 14]\\n\'
  1076.  
  1077.     >>> # Without the flag:
  1078.     >>> test = doctest.DocTestFinder().find(f)[0]
  1079.     >>> doctest.DocTestRunner(verbose=False).run(test)
  1080.     ... # doctest: +ELLIPSIS
  1081.     **********************************************************************
  1082.     File ..., line 2, in f
  1083.     Failed example:
  1084.         print range(15)
  1085.     Expected:
  1086.         [0, 1, 2, ..., 14]
  1087.     Got:
  1088.         [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
  1089.     (1, 1)
  1090.  
  1091.     >>> # With the flag:
  1092.     >>> test = doctest.DocTestFinder().find(f)[0]
  1093.     >>> flags = doctest.ELLIPSIS
  1094.     >>> doctest.DocTestRunner(verbose=False, optionflags=flags).run(test)
  1095.     (0, 1)
  1096.  
  1097.     ... also matches nothing:
  1098.  
  1099.     >>> for i in range(100):
  1100.     ...     print i**2, #doctest: +ELLIPSIS
  1101.     0 1...4...9 16 ... 36 49 64 ... 9801
  1102.  
  1103.     ... can be surprising; e.g., this test passes:
  1104.  
  1105.     >>> for i in range(21): #doctest: +ELLIPSIS
  1106.     ...     print i,
  1107.     0 1 2 ...1...2...0
  1108.  
  1109.     Examples from the docs:
  1110.  
  1111.     >>> print range(20) # doctest:+ELLIPSIS
  1112.     [0, 1, ..., 18, 19]
  1113.  
  1114.     >>> print range(20) # doctest: +ELLIPSIS
  1115.     ...                 # doctest: +NORMALIZE_WHITESPACE
  1116.     [0,    1, ...,   18,    19]
  1117.  
  1118. The REPORT_UDIFF flag causes failures that involve multi-line expected
  1119. and actual outputs to be displayed using a unified diff:
  1120.  
  1121.     >>> def f(x):
  1122.     ...     r\'\'\'
  1123.     ...     >>> print \'\\n\'.join(\'abcdefg\')
  1124.     ...     a
  1125.     ...     B
  1126.     ...     c
  1127.     ...     d
  1128.     ...     f
  1129.     ...     g
  1130.     ...     h
  1131.     ...     \'\'\'
  1132.  
  1133.     >>> # Without the flag:
  1134.     >>> test = doctest.DocTestFinder().find(f)[0]
  1135.     >>> doctest.DocTestRunner(verbose=False).run(test)
  1136.     ... # doctest: +ELLIPSIS
  1137.     **********************************************************************
  1138.     File ..., line 3, in f
  1139.     Failed example:
  1140.         print \'\\n\'.join(\'abcdefg\')
  1141.     Expected:
  1142.         a
  1143.         B
  1144.         c
  1145.         d
  1146.         f
  1147.         g
  1148.         h
  1149.     Got:
  1150.         a
  1151.         b
  1152.         c
  1153.         d
  1154.         e
  1155.         f
  1156.         g
  1157.     (1, 1)
  1158.  
  1159.     >>> # With the flag:
  1160.     >>> test = doctest.DocTestFinder().find(f)[0]
  1161.     >>> flags = doctest.REPORT_UDIFF
  1162.     >>> doctest.DocTestRunner(verbose=False, optionflags=flags).run(test)
  1163.     ... # doctest: +ELLIPSIS
  1164.     **********************************************************************
  1165.     File ..., line 3, in f
  1166.     Failed example:
  1167.         print \'\\n\'.join(\'abcdefg\')
  1168.     Differences (unified diff with -expected +actual):
  1169.         @@ -1,7 +1,7 @@
  1170.          a
  1171.         -B
  1172.         +b
  1173.          c
  1174.          d
  1175.         +e
  1176.          f
  1177.          g
  1178.         -h
  1179.     (1, 1)
  1180.  
  1181. The REPORT_CDIFF flag causes failures that involve multi-line expected
  1182. and actual outputs to be displayed using a context diff:
  1183.  
  1184.     >>> # Reuse f() from the REPORT_UDIFF example, above.
  1185.     >>> test = doctest.DocTestFinder().find(f)[0]
  1186.     >>> flags = doctest.REPORT_CDIFF
  1187.     >>> doctest.DocTestRunner(verbose=False, optionflags=flags).run(test)
  1188.     ... # doctest: +ELLIPSIS
  1189.     **********************************************************************
  1190.     File ..., line 3, in f
  1191.     Failed example:
  1192.         print \'\\n\'.join(\'abcdefg\')
  1193.     Differences (context diff with expected followed by actual):
  1194.         ***************
  1195.         *** 1,7 ****
  1196.           a
  1197.         ! B
  1198.           c
  1199.           d
  1200.           f
  1201.           g
  1202.         - h
  1203.         --- 1,7 ----
  1204.           a
  1205.         ! b
  1206.           c
  1207.           d
  1208.         + e
  1209.           f
  1210.           g
  1211.     (1, 1)
  1212.  
  1213.  
  1214. The REPORT_NDIFF flag causes failures to use the difflib.Differ algorithm
  1215. used by the popular ndiff.py utility.  This does intraline difference
  1216. marking, as well as interline differences.
  1217.  
  1218.     >>> def f(x):
  1219.     ...     r\'\'\'
  1220.     ...     >>> print "a b  c d e f g h i   j k l m"
  1221.     ...     a b c d e f g h i j k 1 m
  1222.     ...     \'\'\'
  1223.     >>> test = doctest.DocTestFinder().find(f)[0]
  1224.     >>> flags = doctest.REPORT_NDIFF
  1225.     >>> doctest.DocTestRunner(verbose=False, optionflags=flags).run(test)
  1226.     ... # doctest: +ELLIPSIS
  1227.     **********************************************************************
  1228.     File ..., line 3, in f
  1229.     Failed example:
  1230.         print "a b  c d e f g h i   j k l m"
  1231.     Differences (ndiff with -expected +actual):
  1232.         - a b c d e f g h i j k 1 m
  1233.         ?                       ^
  1234.         + a b  c d e f g h i   j k l m
  1235.         ?     +              ++    ^
  1236.     (1, 1)
  1237.  
  1238. The REPORT_ONLY_FIRST_FAILURE supresses result output after the first
  1239. failing example:
  1240.  
  1241.     >>> def f(x):
  1242.     ...     r\'\'\'
  1243.     ...     >>> print 1 # first success
  1244.     ...     1
  1245.     ...     >>> print 2 # first failure
  1246.     ...     200
  1247.     ...     >>> print 3 # second failure
  1248.     ...     300
  1249.     ...     >>> print 4 # second success
  1250.     ...     4
  1251.     ...     >>> print 5 # third failure
  1252.     ...     500
  1253.     ...     \'\'\'
  1254.     >>> test = doctest.DocTestFinder().find(f)[0]
  1255.     >>> flags = doctest.REPORT_ONLY_FIRST_FAILURE
  1256.     >>> doctest.DocTestRunner(verbose=False, optionflags=flags).run(test)
  1257.     ... # doctest: +ELLIPSIS
  1258.     **********************************************************************
  1259.     File ..., line 5, in f
  1260.     Failed example:
  1261.         print 2 # first failure
  1262.     Expected:
  1263.         200
  1264.     Got:
  1265.         2
  1266.     (3, 5)
  1267.  
  1268. However, output from `report_start` is not supressed:
  1269.  
  1270.     >>> doctest.DocTestRunner(verbose=True, optionflags=flags).run(test)
  1271.     ... # doctest: +ELLIPSIS
  1272.     Trying:
  1273.         print 1 # first success
  1274.     Expecting:
  1275.         1
  1276.     ok
  1277.     Trying:
  1278.         print 2 # first failure
  1279.     Expecting:
  1280.         200
  1281.     **********************************************************************
  1282.     File ..., line 5, in f
  1283.     Failed example:
  1284.         print 2 # first failure
  1285.     Expected:
  1286.         200
  1287.     Got:
  1288.         2
  1289.     (3, 5)
  1290.  
  1291. For the purposes of REPORT_ONLY_FIRST_FAILURE, unexpected exceptions
  1292. count as failures:
  1293.  
  1294.     >>> def f(x):
  1295.     ...     r\'\'\'
  1296.     ...     >>> print 1 # first success
  1297.     ...     1
  1298.     ...     >>> raise ValueError(2) # first failure
  1299.     ...     200
  1300.     ...     >>> print 3 # second failure
  1301.     ...     300
  1302.     ...     >>> print 4 # second success
  1303.     ...     4
  1304.     ...     >>> print 5 # third failure
  1305.     ...     500
  1306.     ...     \'\'\'
  1307.     >>> test = doctest.DocTestFinder().find(f)[0]
  1308.     >>> flags = doctest.REPORT_ONLY_FIRST_FAILURE
  1309.     >>> doctest.DocTestRunner(verbose=False, optionflags=flags).run(test)
  1310.     ... # doctest: +ELLIPSIS
  1311.     **********************************************************************
  1312.     File ..., line 5, in f
  1313.     Failed example:
  1314.         raise ValueError(2) # first failure
  1315.     Exception raised:
  1316.         ...
  1317.         ValueError: 2
  1318.     (3, 5)
  1319.  
  1320.     '''
  1321.         pass
  1322.  
  1323.     
  1324.     def option_directives():
  1325.         """
  1326. Tests of `DocTestRunner`'s option directive mechanism.
  1327.  
  1328. Option directives can be used to turn option flags on or off for a
  1329. single example.  To turn an option on for an example, follow that
  1330. example with a comment of the form ``# doctest: +OPTION``:
  1331.  
  1332.     >>> def f(x): r'''
  1333.     ...     >>> print range(10)       # should fail: no ellipsis
  1334.     ...     [0, 1, ..., 9]
  1335.     ...
  1336.     ...     >>> print range(10)       # doctest: +ELLIPSIS
  1337.     ...     [0, 1, ..., 9]
  1338.     ...     '''
  1339.     >>> test = doctest.DocTestFinder().find(f)[0]
  1340.     >>> doctest.DocTestRunner(verbose=False).run(test)
  1341.     ... # doctest: +ELLIPSIS
  1342.     **********************************************************************
  1343.     File ..., line 2, in f
  1344.     Failed example:
  1345.         print range(10)       # should fail: no ellipsis
  1346.     Expected:
  1347.         [0, 1, ..., 9]
  1348.     Got:
  1349.         [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  1350.     (1, 2)
  1351.  
  1352. To turn an option off for an example, follow that example with a
  1353. comment of the form ``# doctest: -OPTION``:
  1354.  
  1355.     >>> def f(x): r'''
  1356.     ...     >>> print range(10)
  1357.     ...     [0, 1, ..., 9]
  1358.     ...
  1359.     ...     >>> # should fail: no ellipsis
  1360.     ...     >>> print range(10)       # doctest: -ELLIPSIS
  1361.     ...     [0, 1, ..., 9]
  1362.     ...     '''
  1363.     >>> test = doctest.DocTestFinder().find(f)[0]
  1364.     >>> doctest.DocTestRunner(verbose=False,
  1365.     ...                       optionflags=doctest.ELLIPSIS).run(test)
  1366.     ... # doctest: +ELLIPSIS
  1367.     **********************************************************************
  1368.     File ..., line 6, in f
  1369.     Failed example:
  1370.         print range(10)       # doctest: -ELLIPSIS
  1371.     Expected:
  1372.         [0, 1, ..., 9]
  1373.     Got:
  1374.         [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  1375.     (1, 2)
  1376.  
  1377. Option directives affect only the example that they appear with; they
  1378. do not change the options for surrounding examples:
  1379.  
  1380.     >>> def f(x): r'''
  1381.     ...     >>> print range(10)       # Should fail: no ellipsis
  1382.     ...     [0, 1, ..., 9]
  1383.     ...
  1384.     ...     >>> print range(10)       # doctest: +ELLIPSIS
  1385.     ...     [0, 1, ..., 9]
  1386.     ...
  1387.     ...     >>> print range(10)       # Should fail: no ellipsis
  1388.     ...     [0, 1, ..., 9]
  1389.     ...     '''
  1390.     >>> test = doctest.DocTestFinder().find(f)[0]
  1391.     >>> doctest.DocTestRunner(verbose=False).run(test)
  1392.     ... # doctest: +ELLIPSIS
  1393.     **********************************************************************
  1394.     File ..., line 2, in f
  1395.     Failed example:
  1396.         print range(10)       # Should fail: no ellipsis
  1397.     Expected:
  1398.         [0, 1, ..., 9]
  1399.     Got:
  1400.         [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  1401.     **********************************************************************
  1402.     File ..., line 8, in f
  1403.     Failed example:
  1404.         print range(10)       # Should fail: no ellipsis
  1405.     Expected:
  1406.         [0, 1, ..., 9]
  1407.     Got:
  1408.         [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  1409.     (2, 3)
  1410.  
  1411. Multiple options may be modified by a single option directive.  They
  1412. may be separated by whitespace, commas, or both:
  1413.  
  1414.     >>> def f(x): r'''
  1415.     ...     >>> print range(10)       # Should fail
  1416.     ...     [0, 1,  ...,   9]
  1417.     ...     >>> print range(10)       # Should succeed
  1418.     ...     ... # doctest: +ELLIPSIS +NORMALIZE_WHITESPACE
  1419.     ...     [0, 1,  ...,   9]
  1420.     ...     '''
  1421.     >>> test = doctest.DocTestFinder().find(f)[0]
  1422.     >>> doctest.DocTestRunner(verbose=False).run(test)
  1423.     ... # doctest: +ELLIPSIS
  1424.     **********************************************************************
  1425.     File ..., line 2, in f
  1426.     Failed example:
  1427.         print range(10)       # Should fail
  1428.     Expected:
  1429.         [0, 1,  ...,   9]
  1430.     Got:
  1431.         [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  1432.     (1, 2)
  1433.  
  1434.     >>> def f(x): r'''
  1435.     ...     >>> print range(10)       # Should fail
  1436.     ...     [0, 1,  ...,   9]
  1437.     ...     >>> print range(10)       # Should succeed
  1438.     ...     ... # doctest: +ELLIPSIS,+NORMALIZE_WHITESPACE
  1439.     ...     [0, 1,  ...,   9]
  1440.     ...     '''
  1441.     >>> test = doctest.DocTestFinder().find(f)[0]
  1442.     >>> doctest.DocTestRunner(verbose=False).run(test)
  1443.     ... # doctest: +ELLIPSIS
  1444.     **********************************************************************
  1445.     File ..., line 2, in f
  1446.     Failed example:
  1447.         print range(10)       # Should fail
  1448.     Expected:
  1449.         [0, 1,  ...,   9]
  1450.     Got:
  1451.         [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  1452.     (1, 2)
  1453.  
  1454.     >>> def f(x): r'''
  1455.     ...     >>> print range(10)       # Should fail
  1456.     ...     [0, 1,  ...,   9]
  1457.     ...     >>> print range(10)       # Should succeed
  1458.     ...     ... # doctest: +ELLIPSIS, +NORMALIZE_WHITESPACE
  1459.     ...     [0, 1,  ...,   9]
  1460.     ...     '''
  1461.     >>> test = doctest.DocTestFinder().find(f)[0]
  1462.     >>> doctest.DocTestRunner(verbose=False).run(test)
  1463.     ... # doctest: +ELLIPSIS
  1464.     **********************************************************************
  1465.     File ..., line 2, in f
  1466.     Failed example:
  1467.         print range(10)       # Should fail
  1468.     Expected:
  1469.         [0, 1,  ...,   9]
  1470.     Got:
  1471.         [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  1472.     (1, 2)
  1473.  
  1474. The option directive may be put on the line following the source, as
  1475. long as a continuation prompt is used:
  1476.  
  1477.     >>> def f(x): r'''
  1478.     ...     >>> print range(10)
  1479.     ...     ... # doctest: +ELLIPSIS
  1480.     ...     [0, 1, ..., 9]
  1481.     ...     '''
  1482.     >>> test = doctest.DocTestFinder().find(f)[0]
  1483.     >>> doctest.DocTestRunner(verbose=False).run(test)
  1484.     (0, 1)
  1485.  
  1486. For examples with multi-line source, the option directive may appear
  1487. at the end of any line:
  1488.  
  1489.     >>> def f(x): r'''
  1490.     ...     >>> for x in range(10): # doctest: +ELLIPSIS
  1491.     ...     ...     print x,
  1492.     ...     0 1 2 ... 9
  1493.     ...
  1494.     ...     >>> for x in range(10):
  1495.     ...     ...     print x,        # doctest: +ELLIPSIS
  1496.     ...     0 1 2 ... 9
  1497.     ...     '''
  1498.     >>> test = doctest.DocTestFinder().find(f)[0]
  1499.     >>> doctest.DocTestRunner(verbose=False).run(test)
  1500.     (0, 2)
  1501.  
  1502. If more than one line of an example with multi-line source has an
  1503. option directive, then they are combined:
  1504.  
  1505.     >>> def f(x): r'''
  1506.     ...     Should fail (option directive not on the last line):
  1507.     ...         >>> for x in range(10): # doctest: +ELLIPSIS
  1508.     ...         ...     print x,        # doctest: +NORMALIZE_WHITESPACE
  1509.     ...         0  1    2...9
  1510.     ...     '''
  1511.     >>> test = doctest.DocTestFinder().find(f)[0]
  1512.     >>> doctest.DocTestRunner(verbose=False).run(test)
  1513.     (0, 1)
  1514.  
  1515. It is an error to have a comment of the form ``# doctest:`` that is
  1516. *not* followed by words of the form ``+OPTION`` or ``-OPTION``, where
  1517. ``OPTION`` is an option that has been registered with
  1518. `register_option`:
  1519.  
  1520.     >>> # Error: Option not registered
  1521.     >>> s = '>>> print 12   #doctest: +BADOPTION'
  1522.     >>> test = doctest.DocTestParser().get_doctest(s, {}, 's', 's.py', 0)
  1523.     Traceback (most recent call last):
  1524.     ValueError: line 1 of the doctest for s has an invalid option: '+BADOPTION'
  1525.  
  1526.     >>> # Error: No + or - prefix
  1527.     >>> s = '>>> print 12   #doctest: ELLIPSIS'
  1528.     >>> test = doctest.DocTestParser().get_doctest(s, {}, 's', 's.py', 0)
  1529.     Traceback (most recent call last):
  1530.     ValueError: line 1 of the doctest for s has an invalid option: 'ELLIPSIS'
  1531.  
  1532. It is an error to use an option directive on a line that contains no
  1533. source:
  1534.  
  1535.     >>> s = '>>> # doctest: +ELLIPSIS'
  1536.     >>> test = doctest.DocTestParser().get_doctest(s, {}, 's', 's.py', 0)
  1537.     Traceback (most recent call last):
  1538.     ValueError: line 0 of the doctest for s has an option directive on a line with no example: '# doctest: +ELLIPSIS'
  1539. """
  1540.         pass
  1541.  
  1542.  
  1543.  
  1544. def test_testsource():
  1545.     """
  1546. Unit tests for `testsource()`.
  1547.  
  1548. The testsource() function takes a module and a name, finds the (first)
  1549. test with that name in that module, and converts it to a script. The
  1550. example code is converted to regular Python code.  The surrounding
  1551. words and expected output are converted to comments:
  1552.  
  1553.     >>> import test.test_doctest
  1554.     >>> name = 'test.test_doctest.sample_func'
  1555.     >>> print doctest.testsource(test.test_doctest, name)
  1556.     # Blah blah
  1557.     #
  1558.     print sample_func(22)
  1559.     # Expected:
  1560.     ## 44
  1561.     #
  1562.     # Yee ha!
  1563.     <BLANKLINE>
  1564.  
  1565.     >>> name = 'test.test_doctest.SampleNewStyleClass'
  1566.     >>> print doctest.testsource(test.test_doctest, name)
  1567.     print '1\\n2\\n3'
  1568.     # Expected:
  1569.     ## 1
  1570.     ## 2
  1571.     ## 3
  1572.     <BLANKLINE>
  1573.  
  1574.     >>> name = 'test.test_doctest.SampleClass.a_classmethod'
  1575.     >>> print doctest.testsource(test.test_doctest, name)
  1576.     print SampleClass.a_classmethod(10)
  1577.     # Expected:
  1578.     ## 12
  1579.     print SampleClass(0).a_classmethod(10)
  1580.     # Expected:
  1581.     ## 12
  1582.     <BLANKLINE>
  1583. """
  1584.     pass
  1585.  
  1586.  
  1587. def test_debug():
  1588.     """
  1589.  
  1590. Create a docstring that we want to debug:
  1591.  
  1592.     >>> s = '''
  1593.     ...     >>> x = 12
  1594.     ...     >>> print x
  1595.     ...     12
  1596.     ...     '''
  1597.  
  1598. Create some fake stdin input, to feed to the debugger:
  1599.  
  1600.     >>> import tempfile
  1601.     >>> real_stdin = sys.stdin
  1602.     >>> sys.stdin = _FakeInput(['next', 'print x', 'continue'])
  1603.  
  1604. Run the debugger on the docstring, and then restore sys.stdin.
  1605.  
  1606.     >>> try: doctest.debug_src(s)
  1607.     ... finally: sys.stdin = real_stdin
  1608.     > <string>(1)?()
  1609.     (Pdb) next
  1610.     12
  1611.     --Return--
  1612.     > <string>(1)?()->None
  1613.     (Pdb) print x
  1614.     12
  1615.     (Pdb) continue
  1616.  
  1617. """
  1618.     pass
  1619.  
  1620.  
  1621. def test_pdb_set_trace():
  1622.     '''Using pdb.set_trace from a doctest.
  1623.  
  1624.     You can use pdb.set_trace from a doctest.  To do so, you must
  1625.     retrieve the set_trace function from the pdb module at the time
  1626.     you use it.  The doctest module changes sys.stdout so that it can
  1627.     capture program output.  It also temporarily replaces pdb.set_trace
  1628.     with a version that restores stdout.  This is necessary for you to
  1629.     see debugger output.
  1630.  
  1631.       >>> doc = \'\'\'
  1632.       ... >>> x = 42
  1633.       ... >>> import pdb; pdb.set_trace()
  1634.       ... \'\'\'
  1635.       >>> parser = doctest.DocTestParser()
  1636.       >>> test = parser.get_doctest(doc, {}, "foo", "foo.py", 0)
  1637.       >>> runner = doctest.DocTestRunner(verbose=False)
  1638.  
  1639.     To demonstrate this, we\'ll create a fake standard input that
  1640.     captures our debugger input:
  1641.  
  1642.       >>> import tempfile
  1643.       >>> real_stdin = sys.stdin
  1644.       >>> sys.stdin = _FakeInput([
  1645.       ...    \'print x\',  # print data defined by the example
  1646.       ...    \'continue\', # stop debugging
  1647.       ...    \'\'])
  1648.  
  1649.       >>> try: runner.run(test)
  1650.       ... finally: sys.stdin = real_stdin
  1651.       --Return--
  1652.       > <doctest foo[1]>(1)?()->None
  1653.       -> import pdb; pdb.set_trace()
  1654.       (Pdb) print x
  1655.       42
  1656.       (Pdb) continue
  1657.       (0, 2)
  1658.  
  1659.       You can also put pdb.set_trace in a function called from a test:
  1660.  
  1661.       >>> def calls_set_trace():
  1662.       ...    y=2
  1663.       ...    import pdb; pdb.set_trace()
  1664.  
  1665.       >>> doc = \'\'\'
  1666.       ... >>> x=1
  1667.       ... >>> calls_set_trace()
  1668.       ... \'\'\'
  1669.       >>> test = parser.get_doctest(doc, globals(), "foo", "foo.py", 0)
  1670.       >>> real_stdin = sys.stdin
  1671.       >>> sys.stdin = _FakeInput([
  1672.       ...    \'print y\',  # print data defined in the function
  1673.       ...    \'up\',       # out of function
  1674.       ...    \'print x\',  # print data defined by the example
  1675.       ...    \'continue\', # stop debugging
  1676.       ...    \'\'])
  1677.  
  1678.       >>> try:
  1679.       ...     runner.run(test)
  1680.       ... finally:
  1681.       ...     sys.stdin = real_stdin
  1682.       --Return--
  1683.       > <doctest test.test_doctest.test_pdb_set_trace[8]>(3)calls_set_trace()->None
  1684.       -> import pdb; pdb.set_trace()
  1685.       (Pdb) print y
  1686.       2
  1687.       (Pdb) up
  1688.       > <doctest foo[1]>(1)?()
  1689.       -> calls_set_trace()
  1690.       (Pdb) print x
  1691.       1
  1692.       (Pdb) continue
  1693.       (0, 2)
  1694.  
  1695.     During interactive debugging, source code is shown, even for
  1696.     doctest examples:
  1697.  
  1698.       >>> doc = \'\'\'
  1699.       ... >>> def f(x):
  1700.       ... ...     g(x*2)
  1701.       ... >>> def g(x):
  1702.       ... ...     print x+3
  1703.       ... ...     import pdb; pdb.set_trace()
  1704.       ... >>> f(3)
  1705.       ... \'\'\'
  1706.       >>> test = parser.get_doctest(doc, globals(), "foo", "foo.py", 0)
  1707.       >>> real_stdin = sys.stdin
  1708.       >>> sys.stdin = _FakeInput([
  1709.       ...    \'list\',     # list source from example 2
  1710.       ...    \'next\',     # return from g()
  1711.       ...    \'list\',     # list source from example 1
  1712.       ...    \'next\',     # return from f()
  1713.       ...    \'list\',     # list source from example 3
  1714.       ...    \'continue\', # stop debugging
  1715.       ...    \'\'])
  1716.       >>> try: runner.run(test)
  1717.       ... finally: sys.stdin = real_stdin
  1718.       ... # doctest: +NORMALIZE_WHITESPACE
  1719.       --Return--
  1720.       > <doctest foo[1]>(3)g()->None
  1721.       -> import pdb; pdb.set_trace()
  1722.       (Pdb) list
  1723.         1     def g(x):
  1724.         2         print x+3
  1725.         3  ->     import pdb; pdb.set_trace()
  1726.       [EOF]
  1727.       (Pdb) next
  1728.       --Return--
  1729.       > <doctest foo[0]>(2)f()->None
  1730.       -> g(x*2)
  1731.       (Pdb) list
  1732.         1     def f(x):
  1733.         2  ->     g(x*2)
  1734.       [EOF]
  1735.       (Pdb) next
  1736.       --Return--
  1737.       > <doctest foo[2]>(1)?()->None
  1738.       -> f(3)
  1739.       (Pdb) list
  1740.         1  -> f(3)
  1741.       [EOF]
  1742.       (Pdb) continue
  1743.       **********************************************************************
  1744.       File "foo.py", line 7, in foo
  1745.       Failed example:
  1746.           f(3)
  1747.       Expected nothing
  1748.       Got:
  1749.           9
  1750.       (1, 3)
  1751.       '''
  1752.     pass
  1753.  
  1754.  
  1755. def test_pdb_set_trace_nested():
  1756.     '''This illustrates more-demanding use of set_trace with nested functions.
  1757.  
  1758.     >>> class C(object):
  1759.     ...     def calls_set_trace(self):
  1760.     ...         y = 1
  1761.     ...         import pdb; pdb.set_trace()
  1762.     ...         self.f1()
  1763.     ...         y = 2
  1764.     ...     def f1(self):
  1765.     ...         x = 1
  1766.     ...         self.f2()
  1767.     ...         x = 2
  1768.     ...     def f2(self):
  1769.     ...         z = 1
  1770.     ...         z = 2
  1771.  
  1772.     >>> calls_set_trace = C().calls_set_trace
  1773.  
  1774.     >>> doc = \'\'\'
  1775.     ... >>> a = 1
  1776.     ... >>> calls_set_trace()
  1777.     ... \'\'\'
  1778.     >>> parser = doctest.DocTestParser()
  1779.     >>> runner = doctest.DocTestRunner(verbose=False)
  1780.     >>> test = parser.get_doctest(doc, globals(), "foo", "foo.py", 0)
  1781.     >>> real_stdin = sys.stdin
  1782.     >>> sys.stdin = _FakeInput([
  1783.     ...    \'print y\',  # print data defined in the function
  1784.     ...    \'step\', \'step\', \'step\', \'step\', \'step\', \'step\', \'print z\',
  1785.     ...    \'up\', \'print x\',
  1786.     ...    \'up\', \'print y\',
  1787.     ...    \'up\', \'print foo\',
  1788.     ...    \'continue\', # stop debugging
  1789.     ...    \'\'])
  1790.  
  1791.     >>> try:
  1792.     ...     runner.run(test)
  1793.     ... finally:
  1794.     ...     sys.stdin = real_stdin
  1795.     > <doctest test.test_doctest.test_pdb_set_trace_nested[0]>(5)calls_set_trace()
  1796.     -> self.f1()
  1797.     (Pdb) print y
  1798.     1
  1799.     (Pdb) step
  1800.     --Call--
  1801.     > <doctest test.test_doctest.test_pdb_set_trace_nested[0]>(7)f1()
  1802.     -> def f1(self):
  1803.     (Pdb) step
  1804.     > <doctest test.test_doctest.test_pdb_set_trace_nested[0]>(8)f1()
  1805.     -> x = 1
  1806.     (Pdb) step
  1807.     > <doctest test.test_doctest.test_pdb_set_trace_nested[0]>(9)f1()
  1808.     -> self.f2()
  1809.     (Pdb) step
  1810.     --Call--
  1811.     > <doctest test.test_doctest.test_pdb_set_trace_nested[0]>(11)f2()
  1812.     -> def f2(self):
  1813.     (Pdb) step
  1814.     > <doctest test.test_doctest.test_pdb_set_trace_nested[0]>(12)f2()
  1815.     -> z = 1
  1816.     (Pdb) step
  1817.     > <doctest test.test_doctest.test_pdb_set_trace_nested[0]>(13)f2()
  1818.     -> z = 2
  1819.     (Pdb) print z
  1820.     1
  1821.     (Pdb) up
  1822.     > <doctest test.test_doctest.test_pdb_set_trace_nested[0]>(9)f1()
  1823.     -> self.f2()
  1824.     (Pdb) print x
  1825.     1
  1826.     (Pdb) up
  1827.     > <doctest test.test_doctest.test_pdb_set_trace_nested[0]>(5)calls_set_trace()
  1828.     -> self.f1()
  1829.     (Pdb) print y
  1830.     1
  1831.     (Pdb) up
  1832.     > <doctest foo[1]>(1)?()
  1833.     -> calls_set_trace()
  1834.     (Pdb) print foo
  1835.     *** NameError: name \'foo\' is not defined
  1836.     (Pdb) continue
  1837.     (0, 2)
  1838. '''
  1839.     pass
  1840.  
  1841.  
  1842. def test_DocTestSuite():
  1843.     """DocTestSuite creates a unittest test suite from a doctest.
  1844.  
  1845.        We create a Suite by providing a module.  A module can be provided
  1846.        by passing a module object:
  1847.  
  1848.          >>> import unittest
  1849.          >>> import test.sample_doctest
  1850.          >>> suite = doctest.DocTestSuite(test.sample_doctest)
  1851.          >>> suite.run(unittest.TestResult())
  1852.          <unittest.TestResult run=9 errors=0 failures=4>
  1853.  
  1854.        We can also supply the module by name:
  1855.  
  1856.          >>> suite = doctest.DocTestSuite('test.sample_doctest')
  1857.          >>> suite.run(unittest.TestResult())
  1858.          <unittest.TestResult run=9 errors=0 failures=4>
  1859.  
  1860.        We can use the current module:
  1861.  
  1862.          >>> suite = test.sample_doctest.test_suite()
  1863.          >>> suite.run(unittest.TestResult())
  1864.          <unittest.TestResult run=9 errors=0 failures=4>
  1865.  
  1866.        We can supply global variables.  If we pass globs, they will be
  1867.        used instead of the module globals.  Here we'll pass an empty
  1868.        globals, triggering an extra error:
  1869.  
  1870.          >>> suite = doctest.DocTestSuite('test.sample_doctest', globs={})
  1871.          >>> suite.run(unittest.TestResult())
  1872.          <unittest.TestResult run=9 errors=0 failures=5>
  1873.  
  1874.        Alternatively, we can provide extra globals.  Here we'll make an
  1875.        error go away by providing an extra global variable:
  1876.  
  1877.          >>> suite = doctest.DocTestSuite('test.sample_doctest',
  1878.          ...                              extraglobs={'y': 1})
  1879.          >>> suite.run(unittest.TestResult())
  1880.          <unittest.TestResult run=9 errors=0 failures=3>
  1881.  
  1882.        You can pass option flags.  Here we'll cause an extra error
  1883.        by disabling the blank-line feature:
  1884.  
  1885.          >>> suite = doctest.DocTestSuite('test.sample_doctest',
  1886.          ...                      optionflags=doctest.DONT_ACCEPT_BLANKLINE)
  1887.          >>> suite.run(unittest.TestResult())
  1888.          <unittest.TestResult run=9 errors=0 failures=5>
  1889.  
  1890.        You can supply setUp and tearDown functions:
  1891.  
  1892.          >>> def setUp(t):
  1893.          ...     import test.test_doctest
  1894.          ...     test.test_doctest.sillySetup = True
  1895.  
  1896.          >>> def tearDown(t):
  1897.          ...     import test.test_doctest
  1898.          ...     del test.test_doctest.sillySetup
  1899.  
  1900.        Here, we installed a silly variable that the test expects:
  1901.  
  1902.          >>> suite = doctest.DocTestSuite('test.sample_doctest',
  1903.          ...      setUp=setUp, tearDown=tearDown)
  1904.          >>> suite.run(unittest.TestResult())
  1905.          <unittest.TestResult run=9 errors=0 failures=3>
  1906.  
  1907.        But the tearDown restores sanity:
  1908.  
  1909.          >>> import test.test_doctest
  1910.          >>> test.test_doctest.sillySetup
  1911.          Traceback (most recent call last):
  1912.          ...
  1913.          AttributeError: 'module' object has no attribute 'sillySetup'
  1914.  
  1915.        The setUp and tearDown funtions are passed test objects. Here
  1916.        we'll use the setUp function to supply the missing variable y:
  1917.  
  1918.          >>> def setUp(test):
  1919.          ...     test.globs['y'] = 1
  1920.  
  1921.          >>> suite = doctest.DocTestSuite('test.sample_doctest', setUp=setUp)
  1922.          >>> suite.run(unittest.TestResult())
  1923.          <unittest.TestResult run=9 errors=0 failures=3>
  1924.  
  1925.        Here, we didn't need to use a tearDown function because we
  1926.        modified the test globals, which are a copy of the
  1927.        sample_doctest module dictionary.  The test globals are
  1928.        automatically cleared for us after a test.
  1929.  
  1930.        Finally, you can provide an alternate test finder.  Here we'll
  1931.        use a custom test_finder to to run just the test named bar.
  1932.        However, the test in the module docstring, and the two tests
  1933.        in the module __test__ dict, aren't filtered, so we actually
  1934.        run three tests besides bar's.  The filtering mechanisms are
  1935.        poorly conceived, and will go away someday.
  1936.  
  1937.          >>> finder = doctest.DocTestFinder(
  1938.          ...    _namefilter=lambda prefix, base: base!='bar')
  1939.          >>> suite = doctest.DocTestSuite('test.sample_doctest',
  1940.          ...                              test_finder=finder)
  1941.          >>> suite.run(unittest.TestResult())
  1942.          <unittest.TestResult run=4 errors=0 failures=1>
  1943.        """
  1944.     pass
  1945.  
  1946.  
  1947. def test_DocFileSuite():
  1948.     """We can test tests found in text files using a DocFileSuite.
  1949.  
  1950.        We create a suite by providing the names of one or more text
  1951.        files that include examples:
  1952.  
  1953.          >>> import unittest
  1954.          >>> suite = doctest.DocFileSuite('test_doctest.txt',
  1955.          ...                              'test_doctest2.txt')
  1956.          >>> suite.run(unittest.TestResult())
  1957.          <unittest.TestResult run=2 errors=0 failures=2>
  1958.  
  1959.        The test files are looked for in the directory containing the
  1960.        calling module.  A package keyword argument can be provided to
  1961.        specify a different relative location.
  1962.  
  1963.          >>> import unittest
  1964.          >>> suite = doctest.DocFileSuite('test_doctest.txt',
  1965.          ...                              'test_doctest2.txt',
  1966.          ...                              package='test')
  1967.          >>> suite.run(unittest.TestResult())
  1968.          <unittest.TestResult run=2 errors=0 failures=2>
  1969.  
  1970.        '/' should be used as a path separator.  It will be converted
  1971.        to a native separator at run time:
  1972.  
  1973.          >>> suite = doctest.DocFileSuite('../test/test_doctest.txt')
  1974.          >>> suite.run(unittest.TestResult())
  1975.          <unittest.TestResult run=1 errors=0 failures=1>
  1976.  
  1977.        If DocFileSuite is used from an interactive session, then files
  1978.        are resolved relative to the directory of sys.argv[0]:
  1979.  
  1980.          >>> import new, os.path, test.test_doctest
  1981.          >>> save_argv = sys.argv
  1982.          >>> sys.argv = [test.test_doctest.__file__]
  1983.          >>> suite = doctest.DocFileSuite('test_doctest.txt',
  1984.          ...                              package=new.module('__main__'))
  1985.          >>> sys.argv = save_argv
  1986.  
  1987.        By setting `module_relative=False`, os-specific paths may be
  1988.        used (including absolute paths and paths relative to the
  1989.        working directory):
  1990.  
  1991.          >>> # Get the absolute path of the test package.
  1992.          >>> test_doctest_path = os.path.abspath(test.test_doctest.__file__)
  1993.          >>> test_pkg_path = os.path.split(test_doctest_path)[0]
  1994.  
  1995.          >>> # Use it to find the absolute path of test_doctest.txt.
  1996.          >>> test_file = os.path.join(test_pkg_path, 'test_doctest.txt')
  1997.  
  1998.          >>> suite = doctest.DocFileSuite(test_file, module_relative=False)
  1999.          >>> suite.run(unittest.TestResult())
  2000.          <unittest.TestResult run=1 errors=0 failures=1>
  2001.  
  2002.        It is an error to specify `package` when `module_relative=False`:
  2003.  
  2004.          >>> suite = doctest.DocFileSuite(test_file, module_relative=False,
  2005.          ...                              package='test')
  2006.          Traceback (most recent call last):
  2007.          ValueError: Package may only be specified for module-relative paths.
  2008.  
  2009.        You can specify initial global variables:
  2010.  
  2011.          >>> suite = doctest.DocFileSuite('test_doctest.txt',
  2012.          ...                              'test_doctest2.txt',
  2013.          ...                              globs={'favorite_color': 'blue'})
  2014.          >>> suite.run(unittest.TestResult())
  2015.          <unittest.TestResult run=2 errors=0 failures=1>
  2016.  
  2017.        In this case, we supplied a missing favorite color. You can
  2018.        provide doctest options:
  2019.  
  2020.          >>> suite = doctest.DocFileSuite('test_doctest.txt',
  2021.          ...                              'test_doctest2.txt',
  2022.          ...                         optionflags=doctest.DONT_ACCEPT_BLANKLINE,
  2023.          ...                              globs={'favorite_color': 'blue'})
  2024.          >>> suite.run(unittest.TestResult())
  2025.          <unittest.TestResult run=2 errors=0 failures=2>
  2026.  
  2027.        And, you can provide setUp and tearDown functions:
  2028.  
  2029.        You can supply setUp and teatDoen functions:
  2030.  
  2031.          >>> def setUp(t):
  2032.          ...     import test.test_doctest
  2033.          ...     test.test_doctest.sillySetup = True
  2034.  
  2035.          >>> def tearDown(t):
  2036.          ...     import test.test_doctest
  2037.          ...     del test.test_doctest.sillySetup
  2038.  
  2039.        Here, we installed a silly variable that the test expects:
  2040.  
  2041.          >>> suite = doctest.DocFileSuite('test_doctest.txt',
  2042.          ...                              'test_doctest2.txt',
  2043.          ...                              setUp=setUp, tearDown=tearDown)
  2044.          >>> suite.run(unittest.TestResult())
  2045.          <unittest.TestResult run=2 errors=0 failures=1>
  2046.  
  2047.        But the tearDown restores sanity:
  2048.  
  2049.          >>> import test.test_doctest
  2050.          >>> test.test_doctest.sillySetup
  2051.          Traceback (most recent call last):
  2052.          ...
  2053.          AttributeError: 'module' object has no attribute 'sillySetup'
  2054.  
  2055.        The setUp and tearDown funtions are passed test objects.
  2056.        Here, we'll use a setUp function to set the favorite color in
  2057.        test_doctest.txt:
  2058.  
  2059.          >>> def setUp(test):
  2060.          ...     test.globs['favorite_color'] = 'blue'
  2061.  
  2062.          >>> suite = doctest.DocFileSuite('test_doctest.txt', setUp=setUp)
  2063.          >>> suite.run(unittest.TestResult())
  2064.          <unittest.TestResult run=1 errors=0 failures=0>
  2065.  
  2066.        Here, we didn't need to use a tearDown function because we
  2067.        modified the test globals.  The test globals are
  2068.        automatically cleared for us after a test.
  2069.  
  2070.        """
  2071.     pass
  2072.  
  2073.  
  2074. def test_trailing_space_in_test():
  2075.     """
  2076.     Trailing spaces in expected output are significant:
  2077.  
  2078.       >>> x, y = 'foo', ''
  2079.       >>> print x, y
  2080.       foo 
  2081.  
  2082.     """
  2083.     pass
  2084.  
  2085.  
  2086. def test_unittest_reportflags():
  2087.     """Default unittest reporting flags can be set to control reporting
  2088.  
  2089.     Here, we'll set the REPORT_ONLY_FIRST_FAILURE option so we see
  2090.     only the first failure of each test.  First, we'll look at the
  2091.     output without the flag.  The file test_doctest.txt file has two
  2092.     tests. They both fail if blank lines are disabled:
  2093.  
  2094.       >>> suite = doctest.DocFileSuite('test_doctest.txt',
  2095.       ...                          optionflags=doctest.DONT_ACCEPT_BLANKLINE)
  2096.       >>> import unittest
  2097.       >>> result = suite.run(unittest.TestResult())
  2098.       >>> print result.failures[0][1] # doctest: +ELLIPSIS
  2099.       Traceback ...
  2100.       Failed example:
  2101.           favorite_color
  2102.       ...
  2103.       Failed example:
  2104.           if 1:
  2105.       ...
  2106.  
  2107.     Note that we see both failures displayed.
  2108.  
  2109.       >>> old = doctest.set_unittest_reportflags(
  2110.       ...    doctest.REPORT_ONLY_FIRST_FAILURE)
  2111.  
  2112.     Now, when we run the test:
  2113.  
  2114.       >>> result = suite.run(unittest.TestResult())
  2115.       >>> print result.failures[0][1] # doctest: +ELLIPSIS
  2116.       Traceback ...
  2117.       Failed example:
  2118.           favorite_color
  2119.       Exception raised:
  2120.           ...
  2121.           NameError: name 'favorite_color' is not defined
  2122.       <BLANKLINE>
  2123.       <BLANKLINE>
  2124.  
  2125.     We get only the first failure.
  2126.  
  2127.     If we give any reporting options when we set up the tests,
  2128.     however:
  2129.  
  2130.       >>> suite = doctest.DocFileSuite('test_doctest.txt',
  2131.       ...     optionflags=doctest.DONT_ACCEPT_BLANKLINE | doctest.REPORT_NDIFF)
  2132.  
  2133.     Then the default eporting options are ignored:
  2134.  
  2135.       >>> result = suite.run(unittest.TestResult())
  2136.       >>> print result.failures[0][1] # doctest: +ELLIPSIS
  2137.       Traceback ...
  2138.       Failed example:
  2139.           favorite_color
  2140.       ...
  2141.       Failed example:
  2142.           if 1:
  2143.              print 'a'
  2144.              print
  2145.              print 'b'
  2146.       Differences (ndiff with -expected +actual):
  2147.             a
  2148.           - <BLANKLINE>
  2149.           +
  2150.             b
  2151.       <BLANKLINE>
  2152.       <BLANKLINE>
  2153.  
  2154.  
  2155.     Test runners can restore the formatting flags after they run:
  2156.  
  2157.       >>> ignored = doctest.set_unittest_reportflags(old)
  2158.  
  2159.     """
  2160.     pass
  2161.  
  2162.  
  2163. def test_testfile():
  2164.     '''
  2165. Tests for the `testfile()` function.  This function runs all the
  2166. doctest examples in a given file.  In its simple invokation, it is
  2167. called with the name of a file, which is taken to be relative to the
  2168. calling module.  The return value is (#failures, #tests).
  2169.  
  2170.     >>> doctest.testfile(\'test_doctest.txt\') # doctest: +ELLIPSIS
  2171.     **********************************************************************
  2172.     File "...", line 6, in test_doctest.txt
  2173.     Failed example:
  2174.         favorite_color
  2175.     Exception raised:
  2176.         ...
  2177.         NameError: name \'favorite_color\' is not defined
  2178.     **********************************************************************
  2179.     1 items had failures:
  2180.        1 of   2 in test_doctest.txt
  2181.     ***Test Failed*** 1 failures.
  2182.     (1, 2)
  2183.     >>> doctest.master = None  # Reset master.
  2184.  
  2185. (Note: we\'ll be clearing doctest.master after each call to
  2186. `doctest.testfile`, to supress warnings about multiple tests with the
  2187. same name.)
  2188.  
  2189. Globals may be specified with the `globs` and `extraglobs` parameters:
  2190.  
  2191.     >>> globs = {\'favorite_color\': \'blue\'}
  2192.     >>> doctest.testfile(\'test_doctest.txt\', globs=globs)
  2193.     (0, 2)
  2194.     >>> doctest.master = None  # Reset master.
  2195.  
  2196.     >>> extraglobs = {\'favorite_color\': \'red\'}
  2197.     >>> doctest.testfile(\'test_doctest.txt\', globs=globs,
  2198.     ...                  extraglobs=extraglobs) # doctest: +ELLIPSIS
  2199.     **********************************************************************
  2200.     File "...", line 6, in test_doctest.txt
  2201.     Failed example:
  2202.         favorite_color
  2203.     Expected:
  2204.         \'blue\'
  2205.     Got:
  2206.         \'red\'
  2207.     **********************************************************************
  2208.     1 items had failures:
  2209.        1 of   2 in test_doctest.txt
  2210.     ***Test Failed*** 1 failures.
  2211.     (1, 2)
  2212.     >>> doctest.master = None  # Reset master.
  2213.  
  2214. The file may be made relative to a given module or package, using the
  2215. optional `module_relative` parameter:
  2216.  
  2217.     >>> doctest.testfile(\'test_doctest.txt\', globs=globs,
  2218.     ...                  module_relative=\'test\')
  2219.     (0, 2)
  2220.     >>> doctest.master = None  # Reset master.
  2221.  
  2222. Verbosity can be increased with the optional `verbose` paremter:
  2223.  
  2224.     >>> doctest.testfile(\'test_doctest.txt\', globs=globs, verbose=True)
  2225.     Trying:
  2226.         favorite_color
  2227.     Expecting:
  2228.         \'blue\'
  2229.     ok
  2230.     Trying:
  2231.         if 1:
  2232.            print \'a\'
  2233.            print
  2234.            print \'b\'
  2235.     Expecting:
  2236.         a
  2237.         <BLANKLINE>
  2238.         b
  2239.     ok
  2240.     1 items passed all tests:
  2241.        2 tests in test_doctest.txt
  2242.     2 tests in 1 items.
  2243.     2 passed and 0 failed.
  2244.     Test passed.
  2245.     (0, 2)
  2246.     >>> doctest.master = None  # Reset master.
  2247.  
  2248. The name of the test may be specified with the optional `name`
  2249. parameter:
  2250.  
  2251.     >>> doctest.testfile(\'test_doctest.txt\', name=\'newname\')
  2252.     ... # doctest: +ELLIPSIS
  2253.     **********************************************************************
  2254.     File "...", line 6, in newname
  2255.     ...
  2256.     (1, 2)
  2257.     >>> doctest.master = None  # Reset master.
  2258.  
  2259. The summary report may be supressed with the optional `report`
  2260. parameter:
  2261.  
  2262.     >>> doctest.testfile(\'test_doctest.txt\', report=False)
  2263.     ... # doctest: +ELLIPSIS
  2264.     **********************************************************************
  2265.     File "...", line 6, in test_doctest.txt
  2266.     Failed example:
  2267.         favorite_color
  2268.     Exception raised:
  2269.         ...
  2270.         NameError: name \'favorite_color\' is not defined
  2271.     (1, 2)
  2272.     >>> doctest.master = None  # Reset master.
  2273.  
  2274. The optional keyword argument `raise_on_error` can be used to raise an
  2275. exception on the first error (which may be useful for postmortem
  2276. debugging):
  2277.  
  2278.     >>> doctest.testfile(\'test_doctest.txt\', raise_on_error=True)
  2279.     ... # doctest: +ELLIPSIS
  2280.     Traceback (most recent call last):
  2281.     UnexpectedException: ...
  2282.     >>> doctest.master = None  # Reset master.
  2283. '''
  2284.     pass
  2285.  
  2286. warnings.filterwarnings('ignore', 'class Tester', DeprecationWarning, __name__, 0)
  2287.  
  2288. def old_test1():
  2289.     '''
  2290. >>> from doctest import Tester
  2291. >>> t = Tester(globs={\'x\': 42}, verbose=0)
  2292. >>> t.runstring(r\'\'\'
  2293. ...      >>> x = x * 2
  2294. ...      >>> print x
  2295. ...      42
  2296. ... \'\'\', \'XYZ\')
  2297. **********************************************************************
  2298. Line 3, in XYZ
  2299. Failed example:
  2300.     print x
  2301. Expected:
  2302.     42
  2303. Got:
  2304.     84
  2305. (1, 2)
  2306. >>> t.runstring(">>> x = x * 2\\n>>> print x\\n84\\n", \'example2\')
  2307. (0, 2)
  2308. >>> t.summarize()
  2309. **********************************************************************
  2310. 1 items had failures:
  2311.    1 of   2 in XYZ
  2312. ***Test Failed*** 1 failures.
  2313. (1, 4)
  2314. >>> t.summarize(verbose=1)
  2315. 1 items passed all tests:
  2316.    2 tests in example2
  2317. **********************************************************************
  2318. 1 items had failures:
  2319.    1 of   2 in XYZ
  2320. 4 tests in 2 items.
  2321. 3 passed and 1 failed.
  2322. ***Test Failed*** 1 failures.
  2323. (1, 4)
  2324. '''
  2325.     pass
  2326.  
  2327.  
  2328. def old_test2():
  2329.     '''
  2330.         >>> from doctest import Tester
  2331.         >>> t = Tester(globs={}, verbose=1)
  2332.         >>> test = r\'\'\'
  2333.         ...    # just an example
  2334.         ...    >>> x = 1 + 2
  2335.         ...    >>> x
  2336.         ...    3
  2337.         ... \'\'\'
  2338.         >>> t.runstring(test, "Example")
  2339.         Running string Example
  2340.         Trying:
  2341.             x = 1 + 2
  2342.         Expecting nothing
  2343.         ok
  2344.         Trying:
  2345.             x
  2346.         Expecting:
  2347.             3
  2348.         ok
  2349.         0 of 2 examples failed in string Example
  2350.         (0, 2)
  2351. '''
  2352.     pass
  2353.  
  2354.  
  2355. def old_test3():
  2356.     """
  2357.         >>> from doctest import Tester
  2358.         >>> t = Tester(globs={}, verbose=0)
  2359.         >>> def _f():
  2360.         ...     '''Trivial docstring example.
  2361.         ...     >>> assert 2 == 2
  2362.         ...     '''
  2363.         ...     return 32
  2364.         ...
  2365.         >>> t.rundoc(_f)  # expect 0 failures in 1 example
  2366.         (0, 1)
  2367. """
  2368.     pass
  2369.  
  2370.  
  2371. def old_test4():
  2372.     '''
  2373.         >>> import new
  2374.         >>> m1 = new.module(\'_m1\')
  2375.         >>> m2 = new.module(\'_m2\')
  2376.         >>> test_data = """
  2377.         ... def _f():
  2378.         ...     \'\'\'>>> assert 1 == 1
  2379.         ...     \'\'\'
  2380.         ... def g():
  2381.         ...    \'\'\'>>> assert 2 != 1
  2382.         ...    \'\'\'
  2383.         ... class H:
  2384.         ...    \'\'\'>>> assert 2 > 1
  2385.         ...    \'\'\'
  2386.         ...    def bar(self):
  2387.         ...        \'\'\'>>> assert 1 < 2
  2388.         ...        \'\'\'
  2389.         ... """
  2390.         >>> exec test_data in m1.__dict__
  2391.         >>> exec test_data in m2.__dict__
  2392.         >>> m1.__dict__.update({"f2": m2._f, "g2": m2.g, "h2": m2.H})
  2393.  
  2394.         Tests that objects outside m1 are excluded:
  2395.  
  2396.         >>> from doctest import Tester
  2397.         >>> t = Tester(globs={}, verbose=0)
  2398.         >>> t.rundict(m1.__dict__, "rundict_test", m1)  # f2 and g2 and h2 skipped
  2399.         (0, 4)
  2400.  
  2401.         Once more, not excluding stuff outside m1:
  2402.  
  2403.         >>> t = Tester(globs={}, verbose=0)
  2404.         >>> t.rundict(m1.__dict__, "rundict_test_pvt")  # None are skipped.
  2405.         (0, 8)
  2406.  
  2407.         The exclusion of objects from outside the designated module is
  2408.         meant to be invoked automagically by testmod.
  2409.  
  2410.         >>> doctest.testmod(m1, verbose=False)
  2411.         (0, 4)
  2412. '''
  2413.     pass
  2414.  
  2415.  
  2416. def test_main():
  2417.     test_support.run_doctest(doctest, verbosity = True)
  2418.     test_doctest = test_doctest
  2419.     import test
  2420.     test_support.run_doctest(test_doctest, verbosity = True)
  2421.  
  2422. import trace
  2423. import sys
  2424. import re
  2425. import StringIO
  2426.  
  2427. def test_coverage(coverdir):
  2428.     tracer = trace.Trace(ignoredirs = [
  2429.         sys.prefix,
  2430.         sys.exec_prefix], trace = 0, count = 1)
  2431.     tracer.run('reload(doctest); test_main()')
  2432.     r = tracer.results()
  2433.     print 'Writing coverage results...'
  2434.     r.write_results(show_missing = True, summary = True, coverdir = coverdir)
  2435.  
  2436. if __name__ == '__main__':
  2437.     if '-c' in sys.argv:
  2438.         test_coverage('/tmp/doctest.cover')
  2439.     else:
  2440.         test_main()
  2441.  
  2442.